/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.goldentrade.negocio.beans;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Andre
 */
@Entity
@Table(name = "operacao")
@NamedQueries({
    @NamedQuery(name = "Operacao.findAll", query = "SELECT o FROM Operacao o"),
    @NamedQuery(name = "Operacao.findByCdOperacao", query = "SELECT o FROM Operacao o WHERE o.cdOperacao = :cdOperacao"),
    @NamedQuery(name = "Operacao.findByCdTipoOperacao", query = "SELECT o FROM Operacao o WHERE o.cdTipoOperacao = :cdTipoOperacao"),
    @NamedQuery(name = "Operacao.findByCdTipoCorretagem", query = "SELECT o FROM Operacao o WHERE o.cdTipoCorretagem = :cdTipoCorretagem"),
    @NamedQuery(name = "Operacao.findByVlDcCorretagemVariavel", query = "SELECT o FROM Operacao o WHERE o.vlDcCorretagemVariavel = :vlDcCorretagemVariavel"),
    @NamedQuery(name = "Operacao.findByDsPrazoOperacional", query = "SELECT o FROM Operacao o WHERE o.dsPrazoOperacional = :dsPrazoOperacional"),
    @NamedQuery(name = "Operacao.findByDtEntrada", query = "SELECT o FROM Operacao o WHERE o.dtEntrada = :dtEntrada"),
    @NamedQuery(name = "Operacao.findByDtSaida", query = "SELECT o FROM Operacao o WHERE o.dtSaida = :dtSaida"),
    @NamedQuery(name = "Operacao.findBySinalizador", query = "SELECT o FROM Operacao o WHERE o.sinalizador = :sinalizador"),
    @NamedQuery(name = "Operacao.findByDsAtivo", query = "SELECT o FROM Operacao o WHERE o.dsAtivo = :dsAtivo"),
    @NamedQuery(name = "Operacao.findByQuantidadeAtivo", query = "SELECT o FROM Operacao o WHERE o.quantidadeAtivo = :quantidadeAtivo"),
    @NamedQuery(name = "Operacao.findByPrecoEntrada", query = "SELECT o FROM Operacao o WHERE o.precoEntrada = :precoEntrada"),
    @NamedQuery(name = "Operacao.findByPrecoSaida", query = "SELECT o FROM Operacao o WHERE o.precoSaida = :precoSaida"),
    @NamedQuery(name = "Operacao.findByPrecoLoss", query = "SELECT o FROM Operacao o WHERE o.precoLoss = :precoLoss"),
    @NamedQuery(name = "Operacao.findByPrecoGain", query = "SELECT o FROM Operacao o WHERE o.precoGain = :precoGain")})
public class Operacao implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "cd_operacao")
    private Integer cdOperacao;
    @Basic(optional = false)
    @Column(name = "cd_tipo_operacao")
    private int cdTipoOperacao;
    @Basic(optional = false)
    @Column(name = "cd_tipo_corretagem")
    private int cdTipoCorretagem;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "vl_dc_corretagem_variavel")
    private Float vlDcCorretagemVariavel;
    @Column(name = "ds_prazo_operacional")
    private String dsPrazoOperacional;
    @Column(name = "dt_entrada")
    @Temporal(TemporalType.DATE)
    private Date dtEntrada;
    @Column(name = "dt_saida")
    @Temporal(TemporalType.DATE)
    private Date dtSaida;
    @Column(name = "sinalizador")
    private String sinalizador;
    @Column(name = "ds_ativo")
    private String dsAtivo;
    @Column(name = "quantidade_ativo")
    private Integer quantidadeAtivo;
    @Column(name = "preco_entrada")
    private Float precoEntrada;
    @Column(name = "preco_saida")
    private Float precoSaida;
    @Column(name = "preco_loss")
    private Float precoLoss;
    @Column(name = "preco_gain")
    private Float precoGain;
    @JoinColumn(name = "cd_usuario", referencedColumnName = "cd_usuario")
    @ManyToOne(optional = false)
    private Usuario cdUsuario;
    @JoinColumn(name = "cd_manejo", referencedColumnName = "cd_manejo")
    @ManyToOne
    private ManejoRisco cdManejo;
    @JoinColumn(name = "cd_corretora", referencedColumnName = "cd_corretora")
    @ManyToOne(optional = false)
    private Corretora cdCorretora;

    public Operacao() {
    }

    public Operacao(Integer cdOperacao) {
        this.cdOperacao = cdOperacao;
    }

    public Operacao(Integer cdOperacao, int cdTipoOperacao, int cdTipoCorretagem) {
        this.cdOperacao = cdOperacao;
        this.cdTipoOperacao = cdTipoOperacao;
        this.cdTipoCorretagem = cdTipoCorretagem;
    }

    public Integer getCdOperacao() {
        return cdOperacao;
    }

    public void setCdOperacao(Integer cdOperacao) {
        this.cdOperacao = cdOperacao;
    }

    public int getCdTipoOperacao() {
        return cdTipoOperacao;
    }

    public void setCdTipoOperacao(int cdTipoOperacao) {
        this.cdTipoOperacao = cdTipoOperacao;
    }

    public int getCdTipoCorretagem() {
        return cdTipoCorretagem;
    }

    public void setCdTipoCorretagem(int cdTipoCorretagem) {
        this.cdTipoCorretagem = cdTipoCorretagem;
    }

    public Float getVlDcCorretagemVariavel() {
        return vlDcCorretagemVariavel;
    }

    public void setVlDcCorretagemVariavel(Float vlDcCorretagemVariavel) {
        this.vlDcCorretagemVariavel = vlDcCorretagemVariavel;
    }

    public String getDsPrazoOperacional() {
        return dsPrazoOperacional;
    }

    public void setDsPrazoOperacional(String dsPrazoOperacional) {
        this.dsPrazoOperacional = dsPrazoOperacional;
    }

    public Date getDtEntrada() {
        return dtEntrada;
    }

    public void setDtEntrada(Date dtEntrada) {
        this.dtEntrada = dtEntrada;
    }

    public Date getDtSaida() {
        return dtSaida;
    }

    public void setDtSaida(Date dtSaida) {
        this.dtSaida = dtSaida;
    }

    public String getSinalizador() {
        return sinalizador;
    }

    public void setSinalizador(String sinalizador) {
        this.sinalizador = sinalizador;
    }

    public String getDsAtivo() {
        return dsAtivo;
    }

    public void setDsAtivo(String dsAtivo) {
        this.dsAtivo = dsAtivo;
    }

    public Integer getQuantidadeAtivo() {
        return quantidadeAtivo;
    }

    public void setQuantidadeAtivo(Integer quantidadeAtivo) {
        this.quantidadeAtivo = quantidadeAtivo;
    }

    public Float getPrecoEntrada() {
        return precoEntrada;
    }

    public void setPrecoEntrada(Float precoEntrada) {
        this.precoEntrada = precoEntrada;
    }

    public Float getPrecoSaida() {
        return precoSaida;
    }

    public void setPrecoSaida(Float precoSaida) {
        this.precoSaida = precoSaida;
    }

    public Float getPrecoLoss() {
        return precoLoss;
    }

    public void setPrecoLoss(Float precoLoss) {
        this.precoLoss = precoLoss;
    }

    public Float getPrecoGain() {
        return precoGain;
    }

    public void setPrecoGain(Float precoGain) {
        this.precoGain = precoGain;
    }

    public Usuario getCdUsuario() {
        return cdUsuario;
    }

    public void setCdUsuario(Usuario cdUsuario) {
        this.cdUsuario = cdUsuario;
    }

    public ManejoRisco getCdManejo() {
        return cdManejo;
    }

    public void setCdManejo(ManejoRisco cdManejo) {
        this.cdManejo = cdManejo;
    }

    public Corretora getCdCorretora() {
        return cdCorretora;
    }

    public void setCdCorretora(Corretora cdCorretora) {
        this.cdCorretora = cdCorretora;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cdOperacao != null ? cdOperacao.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Operacao)) {
            return false;
        }
        Operacao other = (Operacao) object;
        if ((this.cdOperacao == null && other.cdOperacao != null) || (this.cdOperacao != null && !this.cdOperacao.equals(other.cdOperacao))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.goldentrade.negocio.Operacao[ cdOperacao=" + cdOperacao + " ]";
    }
    
}
